fix(desktop): let Windows users enable notifications after a false denial - #2483
fix(desktop): let Windows users enable notifications after a false denial#2483BradGroux wants to merge 1 commit into
Conversation
500753b to
071c0b6
Compare
|
I rebased this branch onto current The reported Windows Tauri behavior is still relevant, but the old condition retried Head All 3,725 Desktop JavaScript tests, Desktop typecheck, the E2E build, the focused Playwright settings flow, and targeted Biome checks passed. A real Windows 11/WebView2 smoke test is still required, so #2445 should remain open and the PR should not claim packaged-shell proof. |
071c0b6 to
9a0f18d
Compare
|
Rebased this branch onto current Head moved from Verification:
GitHub checks are rerunning on the new head. |
9a0f18d to
f87a893
Compare
|
Rebased onto current Published head: Desktop check, typecheck, build, and all 3,889 JavaScript tests pass. The focused settings-flow Playwright regression also passes in Chromium. The remaining boundary is unchanged: the automated regression exercises a Windows Tauri identity and the real settings hook against the notification shim, but it is not packaged Windows 11 or WebView2 proof. #2445 should remain open until an affected installation confirms registration and toast delivery. |
f87a893 to
aebe3f2
Compare
|
Rebased onto The PR remains valid. Current The rebase was clean and preserves the current profile E2E bridge changes. No production-path correction beyond the existing single recovery request was needed. Exact-head verification on
The acceptance boundary is unchanged and should stay explicit: this automated regression uses a Windows Tauri identity and the real settings hook against the notification shim, but it is not packaged Windows 11 or WebView2 proof. #2445 should remain open until an affected installation confirms app registration, |
aebe3f2 to
d33c71c
Compare
Review and rebase summaryReviewed the PR for accuracy against current What this PR doesAdds a Windows-specific retry path for desktop notification permissions. On Windows Tauri, the WebView2 notification shim can report Accuracy review
Rebase resultHead moved from CIDCO passes. Semgrep OSS and zizmor were pending at the time of this comment. |
fix(desktop): recover Windows notification permission (upstream PR block#2483)
d33c71c to
a92cef6
Compare
Rebase and accuracy review (2026-08-07)Rebased onto current Branch state: Accuracy reviewThe PR adds a The No
|
6fd06c2 to
4533228
Compare
|
This is the third recurring review + rebase pass for the open BradGroux PRs on What this PR doesLets Windows users re-enable desktop notifications after a false denial. On Windows Tauri, the notification permission shim can report "denied" even when the user hasn't actually denied it. The fix introduces an The PR also adds:
Correctness
Rebase resultRebased from
No code changes were made — this was a review + rebase pass only. |
4533228 to
0720765
Compare
|
Portfolio review update (2026-08-09) I rechecked Windows notification permission recovery against current I rebased the branch onto |
|
This still reproduces on Windows 11 with Buzz Desktop 0.5.8, and this PR looks like the fix. Confirmed the false-denial path: OS notifications are on with no per-app or WebView2 denial anywhere (no |
0720765 to
6e20e16
Compare
|
Portfolio rebase and review update (2026-08-11) Rebased onto Still needed: Windows notification permission false-denial is still reproducible on Buzz Desktop 0.5.9. The notification-related fixes in #5143 (drop unhandled rejection from Verification: |
Field verification on a real Windows 11 install (packaged 0.5.9)This is the packaged-shell confirmation this PR and #2445 have been waiting on. To be precise about what this does and does not prove: I did not build this branch. I verified the mechanism this PR depends on against a stock release build, so the open question -- "on a real Windows 11 / WebView2 install, does the request actually return Environment
1. The false denial reproduces on a clean bootLaunched with nothing injected, then waited for the app to mount: 2. A single requestPermission() repairs itOne call, no loop -- exactly the one-time recovery this PR performs. 3. A real toast arrivesFired through the app's own delivery path, Windows-side state, for the record. The OS was permissive the entire time: So all three acceptance criteria from the PR description hold: the request returns A note for #4660, which reports the app is absent from 4. One residual gap this PR does not close
React.useEffect(() => {
if (
settings.desktopEnabled &&
(permission === "denied" || permission === "unsupported")
) {
setSettings((current) => ({ ...current, desktopEnabled: false }));
}
}, [permission, settings.desktopEnabled]);Measured: with This does not detract from the PR: with it, a Windows user can turn alerts on, which is precisely what #2445 asked for and what is broken today. But they would have to do it again after every restart, because the boot-time state is still the false Closing that too would mean applying the same Windows-Tauri recovery to the mount-time read -- or having Happy to open that as a separate issue or a follow-up PR on top of this one. I did not want to widen this PR's scope while it is waiting on review. 5. A correction to the alternative suggested in #2445#2445 offers a second variant: " That variant would not work. The plugin's // plugins/notification/guest-js/index.ts
async function isPermissionGranted(): Promise<boolean> {
if (window.Notification.permission !== 'default') {
return await Promise.resolve(window.Notification.permission === 'granted')
}
return await invoke('plugin:notification|is_permission_granted')
}By the time anything calls it, the init script has already stamped This PR picked the variant that works. |
|
@BradGroux heads-up so this does not arrive as a surprise: I opened #5600 for the residual gap I described above, rather than pushing into your branch uninvited. It overlaps yours. It repairs the same false denial one layer earlier, in I have no attachment to mine landing. If maintainers prefer your shape -- and |
Co-authored-by: Brad Groux <bradgroux@hotmail.com> Signed-off-by: Brad Groux <bradgroux@hotmail.com>
6e20e16 to
e549b6f
Compare
|
@Joxyko — thank you for the exceptional field verification. The CDP-driven testing against a packaged 0.5.9 install on real Windows 11 is exactly the confirmation this PR needed, and your correction about You identified the one residual gap clearly: the boot-time mount-time read in The fix applies the same Added tests:
I also rebased the entire branch onto the latest main (4b35706, the 0.5.10 release). This keeps Thanks again for the detailed Windows-side state analysis. The independence of the |
Addresses #2445.
What Windows users saw
Buzz could report desktop notification permission as
deniedbefore Windows had registered the installed app as a notification sender. The settings toggle then treated that value as final, so users could not turn notifications on even though requesting permission would repair the state.What changed
defaultstill requests access on every platform.deniedstate gets one recovery request only in the Windows Tauri app.There is no retry loop, Tauri plugin fork, new dependency, or change to notification delivery.
Verification
just desktop-check desktop-test desktop-typecheck desktop-build: passed, including 3,889 JavaScript tests.pnpm --dir desktop build:e2e: passed.pnpm exec playwright test profile.spec.ts --project=integration --grep "Windows retries a false denied notification permission from settings": 1 passed.What still needs a real Windows test
The automated regression uses a Windows platform identity and the real settings hook against the notification shim. It does not run inside Windows WebView2 or a packaged Tauri application.
Keep #2445 open until an affected Windows 11 installation confirms the request returns
granted, Buzz appears under System > Notifications, and a real toast arrives.